package be.kdg.bombermanunlimited.server.objects.interfaces;

import java.rmi.Remote;
import java.rmi.RemoteException;

import be.kdg.bombermanunlimited.client.remote.interfaces.IGameListener;
import be.kdg.bombermanunlimited.server.remote.interfaces.IServerGameListener;

/**
 * lokale speler op de server. dit object wordt ook doorgegeven aan de client
 * die zo via een lokale proxyplayer die deze interface bevat methodes op de
 * server kan oproepen.
 * 
 * @author pieter
 * 
 */
public interface IPlayer extends Remote {
	public static final byte WALK_LEFT = 0x01;
	public static final byte WALK_RIGHT = 0x02;
	public static final byte WALK_UP = 0x04;
	public static final byte WALK_DOWN = 0x08;

	int getRow() throws RemoteException;

	int getColumn() throws RemoteException;

	byte incRow() throws RemoteException;

	byte decRow() throws RemoteException;

	byte incColumn() throws RemoteException;

	byte decColumn() throws RemoteException;

	void setName(String name) throws RemoteException;

	String getName() throws RemoteException;

	IGameListener getClient() throws RemoteException;

	void dropBomb() throws RemoteException;

	void setBombRange(int range) throws RemoteException;

	int getBombRange() throws RemoteException;

	void increaseBombRange() throws RemoteException;

	byte setPosition(int row, int column) throws RemoteException;

	byte setRow(int row) throws RemoteException;

	byte setColumn(int column) throws RemoteException;

	void setListener(IServerGameListener listener) throws RemoteException;

	public byte getWalkableDirections() throws RemoteException;

	public void setDead() throws RemoteException;

}
